home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / relnotes / compiler_eoe / ch1.z / ch1
Encoding:
Text File  |  2001-04-17  |  43.0 KB  |  1,122 lines

  1.  
  2.  
  3.  
  4.                                                - 1 -
  5.  
  6.  
  7.  
  8.                     7.3.1.2m  Base Compiler Execution Environment Release Notes
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.                                                - 2 -
  69.  
  70.  
  71.  
  72.                     1.  _B_a_s_e__C_o_m_p_i_l_e_r__E_x_e_c_u_t_i_o_n__E_n_v_i_r_o_n_m_e_n_t
  73.  
  74.                     These release notes describe the MIPspro 7.3
  75.                     release and its maintenance update (7.3.1.2m) of
  76.                     Silicon Graphics(TM) IRIX(TM) compiler execution
  77.                     environment (EOE) (compiler_eoe).  The IRIX
  78.                     compiler EOE contains compiler execution
  79.                     utilites such as rld and base compiler run-time
  80.                     libraries supplied as DSOs (dynamic shared
  81.                     objects).  DSOs are discussed in the dso(5) man
  82.                     page.  The IRIX compiler EOE supports MIPSpro
  83.                     compilers in either 64-bit, 32-bit, or high
  84.                     performance 32-bit (n32) compilation modes.  For
  85.                     more information about 64-bit and high
  86.                     performance 32-bit interfaces, see the _M_I_P_S_p_r_o
  87.                     _6_4-_b_i_t _P_o_r_t_i_n_g _a_n_d _T_r_a_n_s_i_t_i_o_n _G_u_i_d_e and the
  88.                     _M_I_P_S_p_r_o _N_3_2 _A_B_I _H_a_n_d_b_o_o_k.
  89.  
  90.                     If you plan to run any IRIX applications, it is
  91.                     important to note that you must install the IRIX
  92.                     compiler EOE.  This environment is included in
  93.                     the MIPSpro 7.3 Compiler Execution Environment
  94.                     for IRIX 6.5._x CD (also known as the Compiler
  95.                     EOE CD) and in the IDF CD for IRIX 6.2, 6.3, and
  96.                     6.4 systems.
  97.  
  98.                     Packaged with this software is a separate
  99.                     Software License Agreement.  This software is
  100.                     provided to you solely under the terms and
  101.                     conditions of the Software License Agreement.
  102.                     Please take a few moments to review this
  103.                     agreement.
  104.  
  105.  
  106.  
  107.                     1.1  _R_e_l_e_a_s_e__I_d_e_n_t_i_f_i_c_a_t_i_o_n__I_n_f_o_r_m_a_t_i_o_n
  108.  
  109.                     Following is the release identification
  110.                     information for the IRIX compiler EOE
  111.                     (compiler_eoe):
  112.  
  113.                     Software product              IRIX compiler EOE
  114.  
  115.                     Release                       7.3.1.2m
  116.  
  117.                     Product code                  IDEVFNT-1.2
  118.  
  119.                     System software requirements  IRIX 6.5 or higher
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.                                                - 3 -
  135.  
  136.  
  137.  
  138.                     1.2  _O_n_l_i_n_e__R_e_l_e_a_s_e__N_o_t_e_s
  139.  
  140.                     After you install the online documentation for a
  141.                     product (the relnotes subsystem), you can view
  142.                     the release notes on your screen.
  143.  
  144.                     If you have a graphics system, select Release
  145.                     Notes from the Help submenu of the Toolchest.
  146.                     This displays the grelnotes(1) graphical browser
  147.                     for the online release notes.  For information
  148.                     on options to this command, refer to the
  149.                     grelnotes(1) man page.
  150.  
  151.                     If you do not have a graphics system, you can
  152.                     use the relnotes command.  For information on
  153.                     accessing the online release notes using this
  154.                     command, refer to the relnotes(1) man page.
  155.  
  156.  
  157.                     1.3  _P_r_o_d_u_c_t__S_u_p_p_o_r_t
  158.  
  159.                     Silicon Graphics provides a comprehensive
  160.                     product support maintenance program for its
  161.                     products.
  162.  
  163.                     If you are in the United States or Canada and
  164.                     would like support for your Silicon Graphics
  165.                     supported products, contact the Customer Support
  166.                     Center at 1-800-800-4SGI.
  167.  
  168.                     If you are outside the United States or Canada,
  169.                     contact the Silicon Graphics subsidiary or
  170.                     authorized distributor in your country.
  171.  
  172.  
  173.  
  174.                     1.4  _I_n_s_t_a_l_l_a_t_i_o_n__I_n_f_o_r_m_a_t_i_o_n
  175.  
  176.                     If you are installing this option for the first
  177.                     time, to install the subsystems marked default,
  178.                     use the go menu item.  To install a different
  179.                     set of subsystems, use the following commands in
  180.                     inst to customize the list of subsystems to be
  181.                     installed:
  182.  
  183.                        +o install
  184.  
  185.                        +o remove
  186.  
  187.                        +o keep
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.                                                - 4 -
  201.  
  202.  
  203.  
  204.                        +o step
  205.  
  206.                     Then select the go menu item.
  207.  
  208.  
  209.                     1.5  _S_u_b_s_y_s_t_e_m_s
  210.  
  211.                     The IRIX compiler EOE software (compiler_eoe)
  212.                     for MIPSpro 7.3 includes the following
  213.                     subsystems:
  214.  
  215.                     compiler_eoe.man.relnotes  IRIX compiler
  216.                                                execution environment
  217.                                                release notes
  218.                                                (default)
  219.  
  220.                     compiler_eoe.man.dso       IRIX DSO man page
  221.                                                (default)
  222.  
  223.                     compiler_eoe.man.unix      IRIX standard man
  224.                                                pages (default)
  225.  
  226.                     compiler_eoe.sw.cpp        Source code
  227.                                                preprocessor
  228.                                                (default)
  229.  
  230.                     compiler_eoe.sw.lboot      Kernel lboot software
  231.                                                (default)
  232.  
  233.                     compiler_eoe.sw.lib        Base compilers
  234.                                                execution libraries
  235.                                                (default)
  236.  
  237.                     compiler_eoe.sw.unix       IRIX execution
  238.                                                environment
  239.                                                (compiler) (default)
  240.  
  241.                     compiler_eoe.sw32.lib      Base compilers
  242.                                                execution libraries
  243.                                                (n32) (IRIX 6.2 only)
  244.                                                (default)
  245.  
  246.                     compiler_eoe.sw32.unix     IRIX execution
  247.                                                environment ( n32
  248.                                                compiler) (IRIX 6.2
  249.                                                only) (default)
  250.  
  251.                     compiler_eoe.sw64.lib      Base compilers
  252.                                                execution libraries
  253.                                                (64-bit) (default on
  254.                                                R8000(TM) and
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.                                                - 5 -
  267.  
  268.  
  269.  
  270.                                                R10000(TM) systems
  271.                                                only)
  272.  
  273.                     compiler_eoe.sw64.unix     IRIX execution
  274.                                                environment ( 64-bit
  275.                                                compiler) (default on
  276.                                                R8000 and R10000
  277.                                                systems only)
  278.  
  279.  
  280.                     1.6  _P_a_t_c_h_e_s
  281.  
  282.                     The following patches are included with the
  283.                     compiler_eoe environment on IRIX 6.2, 6.3, and
  284.                     6.4:
  285.  
  286.                     patchSG0003598      Provides updates to the base
  287.                                         compiler libraries
  288.  
  289.                     patchSG0003596      Provides updates to libmp.so
  290.                                         to enable OpenMP(TM) support
  291.                                         for C and C++
  292.  
  293.  
  294.                     1.7  _B_u_g_f_i_x_e_s__i_n__7_._3_._1_._2_m
  295.  
  296.                     778798   rld was broken for purify on pthread
  297.                              applications, and the purified
  298.                              pthreaded app could coredump.
  299.  
  300.                     783179   rqs/rqs32/rqs64 did not process the
  301.                              multigot dynamic section extensions of
  302.                              multigot executables or DSOs correctly
  303.                              (see man ld, man dso).  The error was
  304.                              harmless but could be distressing on a
  305.                              multigot executable (rqs could coredump
  306.                              processing netscape 4.72, for example,
  307.                              but the coredump would NOT harm
  308.                              netscape).  If rqs did not core dump on
  309.                              a  multigot shared library (DSO) it
  310.                              processed, rqs could corrupt the  DSO
  311.                              (if and only if rqs was attempting to
  312.                              'move' the DSO to a new address and
  313.                              terminated normally:  if rqs coredumped
  314.                              then the DSO it was processing is
  315.                              safe).  There are very few multigot
  316.                              DSOs: /usr/lib64/libInventor.so.3 is
  317.                              one such.  Once damaged, a DSO is not
  318.                              repairable, but must be reinstalled.
  319.                              [If "elfdump -L myfile | grep AUX_DYN"
  320.                              shows a line or more of output then
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.                                                - 6 -
  333.  
  334.  
  335.  
  336.                              <myfile> is multigot.]
  337.  
  338.                     770775   n32, 64 libexc.so The
  339.                              trace_back_stack()  and/or exc_unwind()
  340.                              functions could get mixed up and not
  341.                              trace back successfully in programs
  342.                              using pthreads.  Now fixed.
  343.  
  344.                     770782   n32, 64 libexc.so The  exc_unwind()
  345.                              function was not setting sigcontext pc
  346.                              to 0 always.  A prudent application
  347.                              will also check for  a sigcontext pc <
  348.                              4 and stop, though the library bug is
  349.                              fixed.
  350.  
  351.                     770785   n32, 64 libexc.so The  exc_unwind()
  352.                              function was not unwinding past
  353.                              sigtramp(). Fixed.
  354.  
  355.                     761433   n32, 64 libexc.so If dbx or WorkShop
  356.                              had set a frame_exit_trap in a routine
  357.                              on the stack, functions such as
  358.                              trace_back_stack() did not work
  359.                              correctly because of the details of the
  360.                              implementation of dbx/WorkShop frame
  361.                              exit traps.  Fixed libexc.so to deal
  362.                              with this situation so the traceback
  363.                              works.
  364.  
  365.                     792734   o32 libexc.so The floating point
  366.                              registers were being picked up
  367.                              incorrectly from memory when libexc
  368.                              unwound the stack.  libexc was not
  369.                              reflecting the o32 ABI register save
  370.                              rules during the restoration.  Now this
  371.                              works correctly.
  372.  
  373.                     673119   rld -ignore_version did not work when
  374.                              -delay_load was used in earlier 7.3
  375.                              releases.  Fixed.
  376.  
  377.                     678896   _RLDN32_LIST processing could be wrong
  378.                              if  "" was used as the environment
  379.                              variable value to turn off _RLDN32_LIST
  380.                              when _RLD_LIST was set for o32.  Fixed.
  381.  
  382.                     780001   32-bit Log function returns incorrect
  383.                              results. This has been fixed.
  384.  
  385.                     801546   Mips4 version of libfastm gives
  386.                              incorrect results on R5000.
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.                                                - 7 -
  399.  
  400.  
  401.  
  402.                     1.8  _B_u_g_f_i_x_e_s__i_n__7_._3_._1_._1_m__(_a_n_d__7_._3_._1_m_)
  403.  
  404.  
  405.                     The MIPSpro 7.3 Compiler Execution Environment
  406.                     for IRIX 6.5.x consisted of runtime libraries
  407.                     that contained daddiu instructions that could
  408.                     encounter an arithmetic overflow under certain
  409.                     circumstances.  An errata in revision 4 or
  410.                     earlier of MIPS R4000 and R4400 would cause
  411.                     incorrect answers to be produced when
  412.                     encountering arithmetic overflows in executing
  413.                     the daddiu instruction.
  414.  
  415.  
  416.                     To see what processors are on your system,
  417.                     use the hinv command:
  418.  
  419.                     Example:
  420.  
  421.                     % hinv
  422.                     Processor 12: 100 MHZ IP19
  423.                     CPU: MIPS R4400 Processor Chip Revision: 4.0
  424.                     FPU: MIPS R4000 Floating Point Coprocessor Revision: 0.0
  425.  
  426.                     In the example, the Revision 4.0 processor does have the
  427.                     daddiu instruction errata.
  428.  
  429.  
  430.                     Although no demonstrable bugs have been found in
  431.                     the base compiler runtime libraries, they also
  432.                     have been recompiled, so as not to use the
  433.                     daddiu instruction in cases where arithmetic
  434.                     overflow can happen.
  435.  
  436.  
  437.  
  438.  
  439.                     1.9  _B_u_g_f_i_x_e_s__i_n__7_._3
  440.  
  441.                     The following sections describe bugs that have
  442.                     been fixed since the MIPSpro 7.2.1 release.
  443.  
  444.  
  445.                     1.9.1  _B_u_g_s__F_i_x_e_d__i_n__l_i_b_m
  446.  
  447.                     The following libm bugfixes have been applied
  448.                     from patchSG0003131 into compiler_eoe 7.2.1.1m
  449.                     for IRIX 6.5.1m:
  450.  
  451.                     591738, 594226, 595879     Under certain inputs,
  452.                                                sin() returns wrong
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.                                                - 8 -
  465.  
  466.  
  467.  
  468.                                                results on systems
  469.                                                running on the
  470.                                                R5000(TM) CPU.
  471.  
  472.  
  473.  
  474.                     1.9.2  _B_u_g_s__F_i_x_e_d__i_n__l_i_b_m_p
  475.  
  476.                     The following libmp bugfixes have been made in
  477.                     compiler_eoe 7.2.1.3m/f for IRIX 6.5.3m/f:
  478.  
  479.                     658799                     libmp.so is not cpr
  480.                                                compliant in IRIX
  481.                                                versions 6.5.[2,3].
  482.  
  483.                     638713                     Various routines
  484.                                                invoke mp_numthreads,
  485.                                                disabling dynamic
  486.                                                threads in IRIX 6.5.
  487.  
  488.                     657207                     Cannot change number
  489.                                                of threads between
  490.                                                parallel regions with
  491.                                                version 7.3
  492.                                                compilers.
  493.  
  494.                     The following libmp bugfixes have been made in
  495.                     compiler_eoe 7.2.1.2m/f for IRIX 6.5.2m/f:
  496.  
  497.                     554156                     Use of the
  498.                                                environment variable
  499.                                                MP_SLAVE_STACKSIZE
  500.                                                leads to
  501.                                                unpredictable
  502.                                                results.
  503.  
  504.                     560707                     Fortran MP programs
  505.                                                (sproc) with
  506.                                                unlimited stack sizes
  507.                                                fail.
  508.  
  509.                     587240                     A performance
  510.                                                degradation occurs
  511.                                                when OMP_DYNAMIC is
  512.                                                set and the program
  513.                                                is run under Miser.
  514.  
  515.                     599609                     libmp MLD information
  516.                                                is incorrect on 128
  517.                                                CPUs.
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.                                                - 9 -
  531.  
  532.  
  533.  
  534.                     610654                     In OpenMP, a barrier
  535.                                                within the dynamic
  536.                                                extent of a parallel
  537.                                                do receives a
  538.                                                misleading error
  539.                                                message at run time.
  540.                                                In particular, a
  541.                                                barrier is a
  542.                                                synchronization
  543.                                                construct, not a
  544.                                                worksharing
  545.                                                construct.
  546.  
  547.                     587240                     When using the
  548.                                                _DSM_MUSTRUN flag and
  549.                                                a node has only one
  550.                                                CPU and a process
  551.                                                gets scheduled to run
  552.                                                on that node, libmp
  553.                                                attempts to place a
  554.                                                process on a non-
  555.                                                existent processor.
  556.  
  557.                     The following libmp bugfixes have been applied
  558.                     from patchSG0003139 into compiler_eoe 7.2.1.1m
  559.                     for IRIX 6.5.1m:
  560.  
  561.                     581775                     The OpenMP directive,
  562.                                                schedule(static,ichunk),
  563.                                                ignores ichunk.
  564.  
  565.                     581835                     The OpenMP directive,
  566.                                                ORDERED
  567.                                                schedule(dynamic,ichunk),
  568.                                                deadlocks if ichunk
  569.                                                is not equal to
  570.                                                n/nprocs.
  571.  
  572.                     590252                     Program with the
  573.                                                OpenMP ORDERED
  574.                                                directive deadlocks
  575.                                                under some
  576.                                                conditions.
  577.  
  578.  
  579.                     1.9.3  _B_u_g_s__F_i_x_e_d__f_o_r__r_l_d__a_n_d__r_q_s  The following
  580.                     rld and rqs bugs have been fixed since the
  581.                     7.2.1.2m release of compiler_eoe for IRIX
  582.                     6.5.2m:
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.                                                - 10 -
  597.  
  598.  
  599.  
  600.                     608296, 641687, 641192     Various performance
  601.                                                improvements have
  602.                                                reduced CPU time
  603.                                                spent in rld (in
  604.                                                small ways).
  605.  
  606.                     426852                     By default, rld no
  607.                                                longer reevaluates
  608.                                                name bindings on
  609.                                                dlclose().  (The
  610.                                                _RLD_ARGS -f argument
  611.                                                also uses this new
  612.                                                default behavior).
  613.                                                This fix makes
  614.                                                dlclose() fast and
  615.                                                eliminates many
  616.                                                lazy-text-resolves.
  617.                                                It also affects the
  618.                                                operation of programs
  619.                                                that rely on names
  620.                                                being rebound to a
  621.                                                different
  622.                                                function/data item
  623.                                                after a dlclose().
  624.                                                Such programs are
  625.                                                erroneous.  If the -s
  626.                                                option is present
  627.                                                with _RLD_ARGS, the
  628.                                                old slow method of
  629.                                                dlclose is used (this
  630.                                                is provided for
  631.                                                erroneous programs
  632.                                                that depend on the
  633.                                                old method).  Details
  634.                                                are as follows:
  635.  
  636.                                                Each name SHOULD be
  637.                                                bound only once by
  638.                                                rld, but in
  639.                                                complicated
  640.                                                circumstances, names
  641.                                                can be rebound.  If
  642.                                                the result of
  643.                                                application actions
  644.                                                (like dlclose()) is
  645.                                                that the rebinding
  646.                                                finds a different
  647.                                                external definition,
  648.                                                the result can be
  649.                                                application problems
  650.                                                or an application
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.                                                - 11 -
  663.  
  664.  
  665.  
  666.                                                crash (rld does not
  667.                                                realize this has
  668.                                                happened and will not
  669.                                                give a warning).  (In
  670.                                                addition, having a
  671.                                                weak name defined in
  672.                                                one DSO and a strong
  673.                                                version in a DSO
  674.                                                loaded later leads to
  675.                                                'undefined name
  676.                                                bindings' and
  677.                                                potentially
  678.                                                inconsistent
  679.                                                application behavior.
  680.                                                This has always been
  681.                                                true but not
  682.                                                mentioned earlier.
  683.  
  684.                     644389                     If an application did
  685.                                                an sgidladd() or
  686.                                                dlopen(...RTLD_GLOBAL),
  687.                                                followed by a
  688.                                                dlopen(...RTLD_LOCAL)
  689.                                                (and the call to
  690.                                                sgidladd/dlopen(...RTLD_GLOBAL)
  691.                                                was itself done from
  692.                                                a DSO that was opened
  693.                                                or added by a dlopen
  694.                                                or dladd command),
  695.                                                name lookups by rld
  696.                                                might not find names
  697.                                                made global by the
  698.                                                sgidladd() or
  699.                                                dlopen(...RTLD_GLOBAL).
  700.                                                This was a bug
  701.                                                introduced in patch
  702.                                                3378.
  703.  
  704.                     638915                     If a DSO or
  705.                                                executable file had
  706.                                                more than 4096
  707.                                                conflict symbols, rqs
  708.                                                could core dump.  Now
  709.                                                the hash table
  710.                                                definition allows up
  711.                                                to 262,000+ conflict
  712.                                                symbols. Although
  713.                                                this is the maximum
  714.                                                size allowed, if a
  715.                                                smaller number will
  716.                                                work, a smaller
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.                                                - 12 -
  729.  
  730.  
  731.  
  732.                                                number is used.
  733.  
  734.                     649041                     If a lazy-text-
  735.                                                resolution call
  736.                                                involved floating
  737.                                                point argument
  738.                                                registers and if a
  739.                                                call in the -init
  740.                                                code in the DSO
  741.                                                loaded involved
  742.                                                floating point
  743.                                                registers, the lazy-
  744.                                                text call fp argument
  745.                                                registers would be
  746.                                                destroyed by the
  747.                                                -init arguments.  Due
  748.                                                to details of
  749.                                                argument register
  750.                                                passing, this bug is
  751.                                                seen most readily
  752.                                                with the n32/64 ABIs,
  753.                                                though it can be
  754.                                                reproduced in any of
  755.                                                the ABIs.
  756.  
  757.                     651001                     On delay-loads of
  758.                                                DSOs, versions have
  759.                                                been ignored for
  760.                                                almost all earlier
  761.                                                releases of rld.  Now
  762.                                                rld checks the
  763.                                                version number on
  764.                                                delay-loads too.  The
  765.                                                new _RLD_ARGS option
  766.                                                -idv turns off DSO
  767.                                                version checking for
  768.                                                delay-loads in rld
  769.                                                and rld.debug,
  770.                                                restoring the old,
  771.                                                broken behavior.
  772.  
  773.                     630359                     Debugger stack traces
  774.                                                through rld sometimes
  775.                                                stops in rld due to
  776.                                                mistakes in some
  777.                                                hand-written assembly
  778.                                                code in rld.  Now the
  779.                                                stack traces show the
  780.                                                callers back to
  781.                                                main(), as
  782.                                                appropriate.
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.                                                - 13 -
  795.  
  796.  
  797.  
  798.                     629117                     rld now obeys the
  799.                                                general rule that
  800.                                                processing is
  801.                                                breadth-first
  802.                                                (loading of DSOs from
  803.                                                liblists and dlsym()
  804.                                                name resolution are
  805.                                                examples).  Details
  806.                                                are as follows:
  807.  
  808.                                                In the past, it did
  809.                                                almost-breadth-first
  810.                                                ordering.  Because
  811.                                                seeing an error in
  812.                                                ordering required
  813.                                                having duplicate
  814.                                                symbol definitions at
  815.                                                least 4 levels deep
  816.                                                in DSO nested
  817.                                                liblists, it is
  818.                                                unlikely this bug
  819.                                                affected any
  820.                                                application.  But the
  821.                                                ABIs have always been
  822.                                                clear and now rld
  823.                                                obeys the ABIs.
  824.  
  825.                     629128                     In the case of a
  826.                                                dlclose(), all -fini
  827.                                                execution is done for
  828.                                                a set of DSOs (where
  829.                                                this is the dlclose
  830.                                                of the last
  831.                                                reference) before any
  832.                                                are unmapped.
  833.  
  834.                     629707                     Nested
  835.                                                dlopen/sgidladd/delay-
  836.                                                load (that is,
  837.                                                invoking
  838.                                                dlopen/sgidladd/delay-
  839.                                                load from within the
  840.                                                -init or -fini code
  841.                                                of a
  842.                                                dlopen/sgidladd/delay-
  843.                                                load) now works even
  844.                                                in the pthreads and
  845.                                                sproc threads cases.
  846.                                                Nested
  847.                                                dlopen/sgidladd/delay-
  848.                                                load was always
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.                                                - 14 -
  861.  
  862.  
  863.  
  864.                                                problematic (though
  865.                                                if no pthreads or
  866.                                                sproc threads were in
  867.                                                use, it might have
  868.                                                appeared to work, as
  869.                                                long as none of the
  870.                                                nested
  871.                                                dlopen/sgidladd/delay-
  872.                                                load failed).
  873.  
  874.                                                Use nested
  875.                                                dlopen/sgidladd only
  876.                                                when absolutely
  877.                                                required.  Use -init
  878.                                                only when absolutely
  879.                                                required, as the
  880.                                                nested dependencies
  881.                                                make static
  882.                                                prediction of the
  883.                                                ordering in which the
  884.                                                -init code is to be
  885.                                                run difficult.
  886.  
  887.                                                C++ global
  888.                                                constructors ordering
  889.                                                across compiliation
  890.                                                units has always been
  891.                                                unspecified by the
  892.                                                C++ definition.
  893.                                                Adding delay-load to
  894.                                                the set of DSOs with
  895.                                                mutual constructor
  896.                                                calls makes the
  897.                                                ordering even less
  898.                                                predictable.  Using
  899.                                                or setting
  900.                                                sigprocmask(2) in
  901.                                                -init or -fini code
  902.                                                is not a good idea
  903.                                                because the set of
  904.                                                masks seen as ON is
  905.                                                affected by rld.  The
  906.                                                precise behavior of
  907.                                                sigprocmask(2) in
  908.                                                -init or -fini code
  909.                                                depends on which of
  910.                                                1) pthreads, 2) sproc
  911.                                                threads, or 3)
  912.                                                neither is in use.
  913.                                                The details are not
  914.                                                specified in these
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.                                                - 15 -
  927.  
  928.  
  929.  
  930.                                                release notes; it is
  931.                                                best to avoid setting
  932.                                                or resetting the
  933.                                                sigprocmask() in
  934.                                                -init or -fini code.
  935.                                                In addition, it is
  936.                                                still difficult to
  937.                                                debug -init code in
  938.                                                the application
  939.                                                startup.
  940.  
  941.                     634151                     If the filesystem of
  942.                                                a DSO had no XFS
  943.                                                attributes, rqs could
  944.                                                fail (refuse to
  945.                                                update a DSO to allow
  946.                                                quickstart) and fail
  947.                                                to print the proper
  948.                                                reason message.  (The
  949.                                                system would operate
  950.                                                properly in spite of
  951.                                                this rqs error.)  Now
  952.                                                rqs understands that
  953.                                                ENOATTR is not really
  954.                                                a failure, allowing
  955.                                                the DSO to be
  956.                                                quickstarted again,
  957.                                                and uses strerror()
  958.                                                to properly print all
  959.                                                errno values when
  960.                                                there is an error.
  961.  
  962.                     547873                     rld got delay load
  963.                                                DSO visibility
  964.                                                slightly wrong in
  965.                                                MIPSpro 7.2.1.  Too
  966.                                                restrictive in symbol
  967.                                                visibility.
  968.  
  969.                     648641                     ssrun(1) could
  970.                                                interact with rld,
  971.                                                causing some -init
  972.                                                functions to not run
  973.                                                correctly. This fix
  974.                                                corrects the rld
  975.                                                part.
  976.  
  977.                                                Note: it is erroneous
  978.                                                for a signal handler
  979.                                                to call dlopen(),
  980.                                                dlclose(),
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.                                                - 16 -
  993.  
  994.  
  995.  
  996.                                                sgidladd(),
  997.                                                sgidlopen_version(),
  998.                                                dlsym(), or
  999.                                                dlerror().
  1000.                                                Similarly, no
  1001.                                                function call in a
  1002.                                                signal handler is
  1003.                                                allowed to cause a
  1004.                                                delay-load of a DSO
  1005.                                                (this is an implicit
  1006.                                                dlopen and it is not
  1007.                                                correct).  In fact,
  1008.                                                very few functions
  1009.                                                are legally callable
  1010.                                                from a signal
  1011.                                                handler. the dl*
  1012.                                                functions are not so
  1013.                                                callable.  It is up
  1014.                                                to  applications to
  1015.                                                ensure that such does
  1016.                                                not happen.
  1017.  
  1018.                     The following bugs have been fixed since the
  1019.                     7.2.1.1m release of compiler_eoe for IRIX
  1020.                     6.5.1m:
  1021.  
  1022.                     549912                     In rld there were
  1023.                                                potential deadlock
  1024.                                                and signal-mask
  1025.                                                handling problems.
  1026.  
  1027.  
  1028.                     554703                     rld needs to emit a
  1029.                                                better message in
  1030.                                                case of bad
  1031.                                                DSO/executable file.
  1032.  
  1033.  
  1034.                     558948                     In rld, there was an
  1035.                                                incorrrect
  1036.                                                implementation of
  1037.                                                add_version_to_name().
  1038.  
  1039.  
  1040.                     568510                     rqsall, under certain
  1041.                                                circumstances, falls
  1042.                                                into an infinite
  1043.                                                loop.
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.                                                - 17 -
  1059.  
  1060.  
  1061.  
  1062.                     586353                     A call occurs to a
  1063.                                                function defined by
  1064.                                                rld at 0xffffffff.
  1065.  
  1066.  
  1067.                     589044                     An rld warning does
  1068.                                                not give the object
  1069.                                                name.
  1070.  
  1071.  
  1072.                     600777                     rld incorrectly
  1073.                                                performs an alloca()
  1074.                                                in a loop.
  1075.  
  1076.  
  1077.                     604402                     An rqsall manpage
  1078.                                                example does not
  1079.                                                work.
  1080.  
  1081.  
  1082.                     608753                     The rld
  1083.                                                RHF_NO_LIBRARY_REPLACEMENT
  1084.                                                argument is not
  1085.                                                honored.
  1086.  
  1087.  
  1088.                     614133, 615089             rld is too large and
  1089.                                                could be smaller with
  1090.                                                its own vsnprintf.
  1091.  
  1092.  
  1093.                     615441                     rld does extra
  1094.                                                useless lookups,
  1095.                                                degrading
  1096.                                                performance.
  1097.  
  1098.  
  1099.                     620471                     An application that
  1100.                                                performs a dlopen
  1101.                                                experiences slow
  1102.                                                performance due to
  1103.                                                poor string compare
  1104.                                                code.
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.